<?php 
/**
 * 分类模型
 */
class CategoryModel extends Model{
    public $table = 'category';
    
    public $validate = array(
		array('cname','nonull','分类名称不能为空',2,3),
		array('cname','minlen:2','分类名称不能少于2个字符',2,3),
		//array('csort','num:0,65535','分类排序必须为数字',2,2),
	
	
	);
	
	/*
	 * 添加数据
	 * */
    public function addCate(){
    	//如果验证失败。则返回假
    	if(!$this->create()) return false;
		//add有自增id,也就是返回真
		return $this->add();
    }
	
	/*
	 * 获得$cid所对应的所有的子集的cid
	 * */
	/*public function getSoncid($cid,$allData){
		//存一个空数组
		$temp=array();
		//递归循环
		foreach($allData as $v){
			if($v['pid']==$cid){
				//给$temp存值
				$temp[]=$v['cid'];
				$temp=array_merge($temp,$this->getSonCid($v['cid'],$allData));
			}
		}
		return $temp;
		
	}*/
	
	/*
	 * 修改
	 * */
	public function editCate(){
		//如果验证失败。则返回假
		if(!$this->create()) return false;
		//这个地方不用where是因为页面有隐藏域cid。好处是cid在以后转换页面的时候不会丢
		$this->update();
		return true;
		
	}
	
	
	
	
	
	
	//------------------筛选的方法-----------------------------------
	
	/**
	 * 通过cid获得所对应的所有的商品id
	 */
	public function cidGetGid($cid){
		$cids = $this->getSon($cid);
		//调取缓存
		$gids = S("{$cid}_gid");
		//如果缓存失效
		if(!$gids){
			$gids = K('Goods')->where("cid IN(" . implode(',', $cids) . ")")->getField('gid',true);
			//缓存5分钟
			S("{$cid}_gid",$gids,60 * 5);
		}
		return $gids;
	}
	
	/**
	 * 获得所有的子集,包括当前的cid
	 */
	public function getSon($cid){
		$allData = $this->all();
		$cids = $this->getSoncid($cid,$allData);
		$cids[] = $cid;
		return $cids;
	}
	/**
	 * 递归获得所有的子集，不包括自己
	 */
	public function getSoncid($cid,$allData){
		//存一个空数组
		$temp=array();
		//递归循环
		foreach($allData as $v){
			if($v['pid']==$cid){
				//给$temp存值
				$temp[]=$v['cid'];
				$temp=array_merge($temp,$this->getSoncid($v['cid'],$allData));
			}
		}
		return $temp;
		
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}

 
 
 
 
 
 
 
 






















 ?>